package com.mrlv.redis.select;

import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisTemplate;

/**
 * 重新继承RedisTemplate 切redis换 db 配置
 * @author Mrlv
 * @date 2021年12月19日 15:04
 */
public class SelectableRedisTemplate<K, V> extends RedisTemplate<K, V> {

    @Override
    protected RedisConnection createRedisConnectionProxy(RedisConnection pm) {
        return super.createRedisConnectionProxy(pm);
    }

    /**
     * 在连接Redis之前做一些配置
     * @param connection
     * @param existingConnection
     * @return
     */
    @Override
    protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
        Integer db = RedisSelectSupport.getSelect();
        if(db != null){
            //切换 redis db 到 其他的库
            connection.select(db);
        }
        return super.preProcessConnection(connection, existingConnection);
    }
}